package thread;

public class ThreadDemo15 {
    private static long result = 0;

    public static void main(String[] args) throws InterruptedException {
//        Thread t = new Thread(() -> {
//            for (int i = 1; i <= 1000; i++) {
//                result += i;
//            }
//        });
        Thread t = new Thread(() -> {
            long tmp = 0;
            for (long i = 1; i <= 50_0000_0000L; i++) {
                tmp += i;
            }
            result += tmp;

        });

        Thread t2 = new Thread(() -> {
            long tmp = 0;
            for (long i = 1; i <= 50_0000_0000L; i++) {
                tmp += i;
            }
            result += tmp;
        });
        // 把整个运算分成两端段,也就是两个进程进行计算, 这是消耗的时间 会从2.4s 到 1.2s
        // 多线程可以有效提升程序的运行速度
        // 这边可以体会到线程安全

        t.start();
        t2.start();
        long begin = System.currentTimeMillis();

        // 此时没有join result输出什么是不确定的
        // 需要一个join来 保证 在t执行完之后 在打印result
        t.join();
        t2.join();

        long end = System.currentTimeMillis();
        System.out.println("result=" + result);
        System.out.println("time=" + (end - begin) + "ms");
    }
}
